home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 May: Tool Chest / Dev.CD May 97 TC.toast / Tool Chest / QuickTime / QuickTime Tools / DrawTextCodec Example / Sample code / ImageCodec.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-12  |  5.5 KB  |  205 lines  |  [TEXT/MPS ]

  1. /************************************************************
  2.  
  3. Created: Friday, September 27, 1991 10:04:39 AM
  4.  ImageCodec.h
  5.  C Interface to the Macintosh Libraries
  6.  
  7.  
  8.  Copyright Apple Computer, Inc. 1991
  9.  All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13.  
  14. #ifndef    __IMAGECODEC__
  15. #define    __IMAGECODEC__
  16.  
  17. #ifndef __QUICKDRAW__
  18. #include <QuickDraw.h>
  19. #endif
  20.  
  21. #ifndef __QDOFFSCREEN__
  22. #include <QDOffscreen.h>
  23. #endif
  24.  
  25. #ifndef __TYPES__
  26. #include <Types.h>
  27. #endif
  28.  
  29. #ifndef __COMPONENTS__
  30. #include "Components.h"
  31. #endif
  32.  
  33. #ifndef    __IMAGECOMPRESSION__
  34. #include "ImageCompression.h"
  35. #endif    
  36.  
  37. /*    codec component selectors    */
  38. /*    codec selectors 0-127 are reserved by Apple */
  39. /*    codec selectors 128-191 are subtype specific */
  40. /*    codec selectors 192-255 are vendor specific */
  41. /*    codec selectors 256-32767 are reserved by Apple */
  42. /*    negative selectors are reserved by the Component Manager */
  43.  
  44. #define    codecGetCodecInfo                    0x00
  45. #define    codecGetCompressionTime                0x01
  46. #define    codecGetMaxCompressionSize            0x02
  47. #define    codecPreCompress                    0x03
  48. #define    codecBandCompress                    0x04
  49. #define    codecPreDecompress                    0x05
  50. #define    codecBandDecompress                    0x06
  51. #define    codecCDSequenceBusy                    0x07
  52. #define    codecGetCompressedImageSize            0x08
  53. #define    codecGetSimilarity                    0x09
  54. #define    codecTrimImage                        0x0A
  55.  
  56.  
  57.  
  58.  
  59.  
  60. /*    codec capabilities flags    */
  61.  
  62. #define    codecCanScale                        (1L<<0)
  63. #define    codecCanMask                        (1L<<1)
  64. #define    codecCanMatte                        (1L<<2)
  65. #define    codecCanTransform                    (1L<<3)
  66. #define    codecCanTransferMode                (1L<<4)
  67. #define    codecCanCopyPrev                    (1L<<5)
  68. #define    codecCanSpool                        (1L<<6)
  69. #define    codecCanClipVertical                (1L<<7)
  70. #define    codecCanClipRectangular                (1L<<8)
  71. #define    codecCanRemapColor                    (1L<<9)
  72. #define    codecCanFastDither                    (1L<<10)
  73. #define    codecCanSrcExtract                    (1L<<11)
  74. #define    codecCanCopyPrevComp                (1L<<12)
  75. #define    codecCanAsync                        (1L<<13)
  76. #define    codecCanMakeMask                    (1L<<14)
  77. #define codecCanShift                        (1L<<15)
  78.  
  79.  
  80.  
  81.  
  82. /*    codec condition flags    */
  83.  
  84.  
  85. #define    codecConditionFirstBand                (1L<<0)    
  86. #define    codecConditionLastBand                (1L<<1)    
  87. #define    codecConditionCodecChangedMask        (1L<<31)    
  88.  
  89.  
  90.  
  91. #define    codecInfoResourceType                'cdci'            /* codec info resource type */
  92.  
  93.  
  94. typedef    struct {
  95.     long    flags;
  96.     short    wantedPixelSize;
  97.     short    extendWidth;
  98.     short    extendHeight;
  99.     short    bandMin;
  100.     short    bandInc;
  101.     short    pad;
  102.     unsigned long    time;
  103. } CodecCapabilities;
  104.  
  105. typedef     CodecCapabilities *CodecCapabilitiesPtr;
  106.  
  107. typedef    struct {    
  108.     ImageSequence             sequenceID;                /* precompress,bandcompress */
  109.     ImageDescriptionHandle     imageDescription;        /* precompress,bandcompress */
  110.     Ptr                     data;
  111.     long                     bufferSize;
  112.     long                     frameNumber;
  113.     long                     startLine;
  114.     long                     stopLine;
  115.     long                    conditionFlags;
  116.     CodecFlags                 callerFlags;
  117.     CodecCapabilitiesPtr     capabilities;            /* precompress,bandcompress */
  118.     ProgressProcRecord        progressProcRecord;
  119.     CompletionProcRecord    completionProcRecord;    
  120.     FlushProcRecord         flushProcRecord;
  121.  
  122.     PixMap                     srcPixMap;                /* precompress,bandcompress */
  123.     PixMap                     prevPixMap;
  124.     CodecQ                     spatialQuality;
  125.     CodecQ                     temporalQuality;
  126.     Fixed                     similarity;
  127.     long                    reserved[2];
  128. } CodecCompressParams;
  129.  
  130. typedef CodecCompressParams *CodecCompressParamsPtr;
  131.  
  132. typedef    struct {    
  133.     ImageSequence             sequenceID;                /* predecompress,banddecompress */
  134.     ImageDescriptionHandle     imageDescription;        /* predecompress,banddecompress */
  135.     Ptr                     data;
  136.     long                     bufferSize;
  137.     long                     frameNumber;
  138.     long                     startLine;
  139.     long                     stopLine;
  140.     long                    conditionFlags;
  141.     CodecFlags                 callerFlags;
  142.     CodecCapabilitiesPtr     capabilities;            /* predecompress,banddecompress */
  143.     ProgressProcRecord        progressProcRecord;
  144.     CompletionProcRecord    completionProcRecord;
  145.     DataProcRecord            dataProcRecord;
  146.  
  147.     CGrafPtr                 port;                    /* predecompress,banddecompress */
  148.     PixMap                     dstPixMap;                /* predecompress,banddecompress */
  149.     BitMapPtr                 maskBits;
  150.     PixMapPtr                 mattePixMap;
  151.     Rect                     srcRect;                /* predecompress,banddecompress */
  152.     MatrixRecordPtr            matrix;                    /* predecompress,banddecompress */
  153.     CodecQ                     accuracy;                /* predecompress,banddecompress */
  154.     short                     transferMode;            /* predecompress,banddecompress */
  155.     long                    reserved[2];
  156. } CodecDecompressParams;
  157. typedef CodecDecompressParams *CodecDecompressParamsPtr;
  158.  
  159.  
  160. pascal ComponentResult
  161. CDGetCodecInfo(Handle    storage,CodecInfo *info);
  162.  
  163. pascal ComponentResult
  164. CDGetCompressionTime(Handle    storage,PixMapHandle src,const Rect *srcRect, short depth,CodecQ *spatialQuality,
  165.     CodecQ *temporalQuality,unsigned long *time);
  166.  
  167.  
  168. pascal ComponentResult
  169. CDGetMaxCompressionSize(Handle    storage,PixMapHandle src,const Rect *srcRect, short depth,CodecQ quality,
  170.     long *size);
  171.  
  172.  
  173. pascal ComponentResult
  174. CDPreCompress(Handle    storage,CodecCompressParams *params);
  175.  
  176. pascal ComponentResult
  177. CDBandCompress(Handle    storage,CodecCompressParams *params);
  178.  
  179. pascal ComponentResult
  180. CDPreDecompress(Handle    storage,CodecDecompressParams *params);
  181.  
  182. pascal ComponentResult
  183. CDBandDecompress(Handle    storage,CodecDecompressParams *params);
  184.  
  185. pascal ComponentResult
  186. CDCodecBusy(Handle    storage,ImageSequence seq);
  187.  
  188.  
  189. pascal ComponentResult
  190. CDGetCompressedImageSize(Handle    storage,ImageDescriptionHandle desc,Ptr data,long bufferSize, 
  191.     DataProcRecordPtr dataProc,long *dataSize);
  192.  
  193. pascal ComponentResult
  194. CDGetSimilarity(Handle    storage,PixMapHandle src,const Rect *srcRect,ImageDescriptionHandle desc,Ptr data,
  195.     Fixed *similarity);
  196.  
  197. pascal ComponentResult
  198. CDTrimImage(Handle    storage,ImageDescriptionHandle desc,Ptr inData,long inBufferSize, DataProcRecordPtr dataProc,
  199.     Ptr outData,long outBufferSize,FlushProcRecordPtr flushProc,Rect *trimRect,ProgressProcRecordPtr progressProc);
  200.  
  201.  
  202.  
  203.  
  204. #endif    __IMAGECODEC__
  205.